package com.tender;

import com.tender.domain.ShiroUser;
import com.tender.util.ShiroUtil;
import org.apache.shiro.authz.AuthorizationInfo;
import com.tender.dto.*;
import java.util.List;

public interface ShiroUserBridgeBizService {

    /**
     * @Description 根据用户登录名来查找用户信息
     *
     * biz 层级的出参，按照规则，应该是DTO类型的，但是考虑到，可能在service 层也需要获取当前用户，
     * 可参考{@link ShiroUtil#getShiroUser()}方法
     * 因此就设计成了 {@link ShiroUser} 出参类型
     *
     * @param loginName 用户登录名
     * @return user对象，类型不能是 ShiroUserDTO，因为在 service 层，引用不到 DTO类型
     */
    ShiroUser findUserInfoByLoginName(String loginName);

    /**
     * @Description 鉴权方法
     * @param shiroUserDTO 令牌对象
     * @return 鉴权信息
     */
    AuthorizationInfo getAuthorizationInfo(ShiroUserDTO shiroUserDTO);

    /**
     * @Description 查询用户对应角色标识list
     * @param userRowId 用户id
     * @return 角色标识集合
     */
    List<ShiroRoleDTO> findRoleList(Long userRowId);

    /**
     * @Description 查询用户对应资源标识list
     * @param userRowId 用户id
     * @return 资源标识集合
     */
    List<ShiroResourceDTO> findResourceList(Long userRowId);

    void clearCache(ShiroUserDTO shiroUserDTO);
}
